package com.bitauto.i.commonUtils.handler;

import com.bitauto.i.commonUtils.model.ProductVO;
import com.bitauto.i.commonUtils.model.Result;
import org.springframework.stereotype.Component;

import java.util.Objects;

@Component
public class NullValueCheckHandler extends AbstractCheckHandler{

    @Override
    public Result handle(ProductVO param) {
        System.out.println("空值校验Handler开始...");
        //降级：如果配置了降级，则跳过此处理器，执行下一个处理器
        if (super.getConfig().getDown()){
            System.out.println("空值校验Handler已降级，跳过空值校验Handler...");
            return  super.next(param);
        }

        //参数必填校验
        if  (Objects.isNull(param))  {
            return  Result.failure("参数为空");
        }
        //SkuId商品主键参数必填校验
        if  (Objects.isNull(param.getSkuId()))  {
            return  Result.failure("商品id为空");
        }
        //Price价格参数必填校验
        if  (Objects.isNull(param.getPrice()))  {
            return  Result.failure("商品价格为空");
        }
        //Stock库存参数必填校验
        if  (Objects.isNull(param.getStock()))  {
            return  Result.failure("商品库存为空");
        }
        System.out.println("空值校验Handler通过...");

        //执行下一个处理器
        return  super.next(param);
    }

}
